/*
 * TagUtils.java
 *
 *  created: 3.2.2012
 *  charset: UTF-8
 *  license: MIT (X11) (See LICENSE file for full license)
 */

package cz.mp.k3bg.util;
import static cz.mp.k3bg.Application.EOL;

/**
 *
 * @author Martin Pokorný
 * @version 0.1
 */
public class TagUtils {
    
    /** */
    private TagUtils() {
    }

    /**
     * Pouze nahradí znaky konce řádky za HTML značku {@literal <br>}.
     * 
     * @param multiLineText
     * @return 
     */
    public static String convertToPrimitiveHtml(final String multiLineText) {
        if (cz.mp.util.StringUtils.isBlank(multiLineText)) {
            return "";
        }
        
        String result = "    " + multiLineText;
        result = result.replaceAll("\n|\r\n|\r", "<br>" + EOL + "    ");
        result = result + "<br>" + EOL;
        
        return result;
    } 

    /**
     * Nahradí speciální znaky XML za jejich náhradní (escapované) varianty.
     * <p>
     * <pre>
     * {@literal  &  --->  &amp;}
     * {@literal  "  --->  &quot;}
     * {@literal  '  --->  &apos;}
     * {@literal  <  --->  &lt;}
     * {@literal  >  --->  &gt;}
     * </pre>
     *
     * <p>
     * <em>Varování: </em>
     * Nefunguje, pokud jsou v textu již nahrazené znaky XML
     * ({@literal  &amp;  --->  &amp;amp;})
     *
     * <p>
     * <em>Poznámka: </em>
     * Protože {@literal Apache Lang -- StringEscapeUtils.escapeXml(...)}
     * escapuje i znaky s diakritikou, což nechci, protože to ztěžuje
     * ruční úpravy.
     *
     * @param text
     * @return
     * @see #unescapeXmlInSimpleWay(java.lang.String)
     */
    public static String escapeXmlInSimpleWay(String text) {
        String result = text;

        if (! result.contains("&amp;")) {
            // (pokud je zadáno &amp;  výsledek by byl  &amp;amp;)
            
            result = result.replaceAll("&", "&amp;");
            result = result.replaceAll("\"", "&quot;");
            result = result.replaceAll("'", "&apos;");
            result = result.replaceAll("<", "&lt;");
            result = result.replaceAll(">", "&gt;");
        }

        return result;
    }
    
    /**
     * Náhradní (escapované) XML entity za obyčejné znaky (viz níž).
     * <p>
     * <pre>
     * {@literal  &amp;   &#38;  &#x26;   --->  &}
     * {@literal  &quot;  &#34;  &#x22;   --->  "}
     * {@literal  &apos;  &#39;  &#x27;   --->  '}
     * {@literal  &lt;    &#60;  &#x3C;   --->  <}
     * {@literal  &gt;    &#62;  &#x3E;   --->  >}
     * </pre>
     *
     * @param text
     * @return
     * @see #escapeXmlInSimpleWay(java.lang.String)
     */
    public static String unescapeXmlInSimpleWay(String text) {
        String result = text;

        result = result.replaceAll("&amp;|&#38;|&#x26;", "&");
        result = result.replaceAll("&quot;|&#34;|&#x22;", "\"");
        result = result.replaceAll("&apos;|&#39;|&#x27;", "'");
        result = result.replaceAll("&lt;|&#60;|&#x3C;", "<");
        result = result.replaceAll("&gt;|&#62;|&#x3E;", ">");

        return result;
    }
    
}   // StringUtils.java
